package com.dys.arithmeticoperator;

/**
 * @className: com.dys.arithmeticoperator.AssignmentTest
 * @description: 赋值运算符： =
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/06/15 下午8:57
 */
public class AssignmentTest {

    public static void main(String[] args) {
        test();
    }

    /**
     * 任意给出2个数，交换两个数的值并输出
     */
    public static void swap() {
        // 1.任意给出2个数
        int num1 = 10;
        int num2 = 20;
        // 2.输出交换前的值
        System.out.println("交换前：num1 = " + num1 + ",\tnum2 = " + num2);
        // 3.交换
        // 错误代码：
       /* num1 = num2;
        num2 = num1;*/
        // 解决办法：引入一个中间变量
        /*int temp;
        temp = num1;
        num1 = num2;
        num2 = temp;*/
        // 写法2
        // int temp;
        // temp = num2;
        // num2 = num1;
        // num1 = temp;

        // 写法3
        num1 = num1 + num2;
        num2 = num1 - num2;
        num1 = num1 - num2;


        // 4.输出交换后的值
        System.out.println("交换后：num1 = " + num1 + ",\tnum2 = " + num2);
    }

    /**
     * 任意给出3个数,求和
     */
    public static void summation() {
        // 1.给出3个数
        int num1 = 10;
        int num2 = 20;
        int num3 = 30;
        // 2.求和
        // int sum = num1 + num2 + num3;
        // 定义一个变量,用来接收和
        int sum = 0;
        sum = sum + num1;// 等效sum+=num1;
        sum = sum + num2;// 等效sum+=num2;
        sum = sum + num3;// 等效sum+=num3;
        // 3.输出
        System.out.println("和为：" + sum);
    }

    /**
     * 当 byte,short,char 随意组合、参与运算时，结果类型为int。
     */
    public static void test() {
        byte a = 10;
        int b = 20;
        // 底层自动转换
        a += b;
        // 需要强转：因为a+b得到的返回值，已经是int型了
        a = (byte) (a + b);

        // num1 = num1 + num2 和 num1 = num2 + num1一样吗？基本类型没区别，引用类型有区别
        int num1 = 10;
        int num2 = 20;
        num1 = num1 + num2;
        System.out.println("结果为: num1 = " + num1);
        num1 = 10;
        num2 = 20;
        num1 = num2 + num1;
        System.out.println("结果为: num1 = " + num1);

        String s1 = "a";
        String s2 = "b";
        s1 = s1 + s2;
        System.out.println("String类型执行的结果: " + s1);
        s1 = "a";
        s2 = "b";
        s1 = s2 + s1;
        System.out.println("String类型执行的结果: " + s1);
    }
}
